<?php
include_once($_SERVER["DOCUMENT_ROOT"].'/outils/properties/PropertiesLoader.php');
include_once $_SERVER["DOCUMENT_ROOT"].'/outils/database/Database.php';
include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
PropertiesLoader::loadProperties($_SERVER["DOCUMENT_ROOT"].'/properties.ini');

$nomFichierAExecuter = ParameterGetter::getRequestParameter("scriptAExecuter", false);
if ($nomFichierAExecuter && $nomFichierAExecuter != "") {
	$cheminScriptsSQL = $_SERVER["DOCUMENT_ROOT"].PropertiesLoader::getProperty("scriptSQL.chemin");
	$completeCheminFichierScript = $cheminScriptsSQL . "/" . $nomFichierAExecuter;
	$listeRequete = getListeRequete($completeCheminFichierScript);
	
	//foreach ($listeRequete as $requete) {
		//	echo "<br>    - $requete"; 
		//}
	try {
		$date = date('d/m/Y');
		$listeRequete[] = "INSERT INTO db_update(nomfichier, date) values ('$nomFichierAExecuter',STR_TO_DATE('$date','%d/%m/%Y'))";
		Database::getInstance()->executeQueryListInTransaction($listeRequete);
		WriterJSON::echoSuccess ("Exécuté");
	} catch (Exception $e) {
		WriterJSON::echoError ("Erreur : ".$e->getMessage());
	}
} else {
	getRapport();
}

function getRapport(){
	//phpinfo();
	$cheminScriptsSQL = $_SERVER["DOCUMENT_ROOT"].PropertiesLoader::getProperty("scriptSQL.chemin");

	//Vérifie que tous albums du disque ont un enregistrement en base
	$listeFichierScripts = scandir($cheminScriptsSQL);
	$listeFichierScriptsAExecuter = Array();
	foreach($listeFichierScripts as $fichierScript) {
		$completeCheminFichierScript = $cheminScriptsSQL . "/" . $fichierScript;
		if ($fichierScript != ".." && $fichierScript != "." && is_file($completeCheminFichierScript)) {
			if (!isScriptAlreadyExecuted($fichierScript)) {
				$listeFichierScriptsAExecuter[] = $fichierScript;
			}
		}	
	}
	
	
	foreach ($listeFichierScriptsAExecuter as $fichierScriptsAExecuter) {
		$completeCheminFichierScript = $cheminScriptsSQL. "/" . $fichierScriptsAExecuter;
		echo "<br/></br><b>Fichier à exécuter : $fichierScriptsAExecuter contenant les requêtes : </b>";
		echo "fichier : $completeCheminFichierScript";
		$listeRequete = getListeRequete($completeCheminFichierScript);
		foreach ($listeRequete as $requete) {
			echo "<br>    - $requete"; 
		}
		$nomFichierScriptSansExtension = basename ( $completeCheminFichierScript, ".sql" );
		?>
		</br>
		<button id='bouton_execution_script_<?php echo"$nomFichierScriptSansExtension"; ?>' onclick="executeScript('<?php echo"$nomFichierScriptSansExtension"; ?>')">Exécuter</button>
		<span id='span_execution_script_<?php echo"$nomFichierScriptSansExtension"; ?>'></span>
		<?php
	}
}

function isScriptAlreadyExecuted($fichierScript) {
	
	$result = Database::getInstance()->executeQueryAndClose("SELECT id FROM db_update WHERE nomfichier = '$fichierScript'");
	foreach ($result as $row) {
	//foreach ($result as $row) {
		return true;
	}
	return false;
}

function getContenu($completeCheminFichierScript) {
	$contenu = fread(fopen($completeCheminFichierScript, "r"), filesize($completeCheminFichierScript));
	return $contenu;
}

function getListeRequete($completeCheminFichierScript) {
	$contenu = getContenu($completeCheminFichierScript);
	$contenu = str_replace ("\n", "", $contenu);
	$contenu = str_replace ("\r", "", $contenu);
	$contenu = str_replace ("\t", "", $contenu);
	$listeRequete = preg_split ( "#;#" , $contenu, NULL, PREG_SPLIT_NO_EMPTY);
	return $listeRequete;
}

?>